Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核

帖子发起人: 一鱼之歌   发起时间: 2009-02-13 01:16 上午   回复: 6

Print Search
帖子排序:    
   2009-02-13, 01:16 上午
vincent 离线,最后访问时间: 2009/9/8 11:10:53 一鱼之歌

发帖数前25位
注册: 2009-02-10
发 贴: 36
资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote
想查看在页被转换出物理内存后,系统怎么样从页面文件中找回来。下面只是我找到的一点信息

哪个帮我补全
==============================
页已被置换出物理内存。在这种情况下,Reserved1和Reserved2位域将包含系统在页面文件中定位该页的信息,因此,当需要访问该页时,可很快的将其换回物理内存
IP 地址: 已记录   报告
   2009-02-14, 14:05 下午
vincent 离线,最后访问时间: 2009/9/8 11:10:53 一鱼之歌

发帖数前25位
注册: 2009-02-10
发 贴: 36
Re: 资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote
-_-...........这方面资料真的好少,王宇兄来帮下
IP 地址: 已记录   报告
   2009-02-15, 03:24 上午
MJ0011 离线,最后访问时间: 2009/12/24 22:33:41 MJ0011

发帖数前10位
注册: 2008-04-24
发 贴: 112
Re: 资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote
简单来说,页被换出后,再访问则触发int 0xe缺页中断

系统会进入KiTrap0e,即系统默认的缺页中断处理例程

KiTrap0e会调用 MmAccessFault函数

该函数进行复杂的判断后发现是换出的页面后,调用函数MiDispatchFault来试图完成页面的访问

该函数再进行一系列复杂的判断后

通过Cc系统函数从文件系统缓存中读入数据

或者通过系统函数IoPageRead从pagefile或页面映射的section对应的文件中读入页面数据,最终实现页面的换入
IP 地址: 已记录   报告
   2009-02-15, 04:44 上午
vincent 离线,最后访问时间: 2009/9/8 11:10:53 一鱼之歌

发帖数前25位
注册: 2009-02-10
发 贴: 36
Re: 资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote
真的很复杂,。。。。。。。等以后工作再看了,今天这么晚还在。哈
IP 地址: 已记录   报告
   2009-02-19, 12:30 下午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote

还真复杂...
我昨晚从 0x0E 开始简单地跟了一下

从 ENTER_TRAP、VERIFY_BASE_TRAP_FRAME(MODIFY_BASE_TRAP_FRAME)建立、校验 trap frame 开始,到 call  _MmAccessFault@16 再到 MiDispatchFault 里的4种区分 —— MiResolveProtoPteFault、MiResolveTransitionFault、MiResolveDemandZeroFault 以及 MiResolvePageFileFault(这就是所谓的 Page resides in paging file)。Build 完 MDL 和其他数据结构之后就要开始 IoPageRead 了(核心的参数就是上述几个例程的 OUT —— PMMINPAGE_SUPPORT) IoPageRead 会给 PMMINPAGE_SUPPORT->FilePointer 对应的设备对象发标志含有 IRP_PAGING_IO 的 IRP:

    irp->Flags = IRP_PAGING_IO | IRP_NOCACHE | IRP_SYNCHRONOUS_PAGING_IO | IRP_INPUT_OPERATION;

IoCallDriver 之后就可以跟踪 IRP 了。但后面我昨晚就没跟踪了,我猜是发到了 sr!SrPassThrough -> Ntfs!NtfsFsdRead,或是 FatFsdRead?

跟踪完也许可以写更强悍的 Shadow Walker 了...


IP 地址: 已记录   报告
   2009-02-19, 14:14 下午
vincent 离线,最后访问时间: 2009/9/8 11:10:53 一鱼之歌

发帖数前25位
注册: 2009-02-10
发 贴: 36
Re: 资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote
强大。。mark下来,可惜俺还没工作,要不也可以买本软件调试学学
IP 地址: 已记录   报告
   2009-02-19, 17:29 下午
MJ0011 离线,最后访问时间: 2009/12/24 22:33:41 MJ0011

发帖数前10位
注册: 2008-04-24
发 贴: 112
Re: 资料查了好多,就一点,哪个大牛帮忙补下
Reply Quote
iopageread实际是发到了fileobject的filter上即FSD上
其fileobject是ntcreatepagingfile时存入mmpagefile链表内的
IP 地址: 已记录   报告
高端调试 » 内核探秘 » Windows内核 » 资料查了好多,就一点,哪个大牛帮忙补下

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.